Yeni bir matlab sorusu ile karşınızdayım.
Herkese merhabalar, matlab ile daha cicim aylarımızdayız. Pek kullanmayı bilmeyip kaş göz yara yara iş hallediyorum. Fonksiyonları tanıtma aşamasını bir şekilde tamamladım. Aşağıdaki gibi(m file şeklinde bu)function dYfuncvecdt=ODEfunc(t, Yfuncvec)L= Yfuncvec(1);Cs= Yfuncvec(2);Ci= Yfuncvec(3);Rs= Y
Herkese merhabalar, matlab ile daha cicim aylarımızdayız. Pek kullanmayı bilmeyip kaş göz yara yara iş hallediyorum. Fonksiyonları tanıtma aşamasını bir şekilde tamamladım. Aşağıdaki gibi(m file şeklinde bu)
function dYfuncvecdt=ODEfunc(t, Yfuncvec)
L= Yfuncvec(1);
Cs= Yfuncvec(2);
Ci= Yfuncvec(3);
Rs= Yfuncvec(4);
Ri= Yfuncvec(5);
% Explicit equation
kf = 7.2e7;
kr = .34;
kt = .03;
ke = .165;
kdeg = .0022;
Vr = .013;
Nav = 6.02*10^23;
n = 10^9;
% Differential equations
dLdt = (-kf*L*Rs+kr*Cs)*(n/Nav);
dCsdt = kf*L*Rs-(kr+ke)*Cs;
dCidt = ke*Cs-kdeg*Ci;
dRsdt = -kf*L*Rs+kr*Cs+Vr-kt*Rs;
dRidt = kt*Rs-kdeg*Ri;
dYfuncvecdt=[dLdt;dCsdt;dCidt;dRsdt;dRidt];
Daha sonra grafiğimi çizdirmek istedim haliyle ve şu komutu girdim:
clear
clc
close all
tspan = [0 60]; % Range for the time of the reaction
y0 = [0.1;0;0;5*10^(4);0]; % Initial values for the dependent variables
[t y]=ode45(@ODEfunc,tspan,y0);
plot(t,y(:,1),t,y(:,2),t,y(:,3),t,y(:,4),t,y(:,5));
legend('L','Cs','Ci','Rs','Ri')
xlabel('Time(min)')
ylabel('(M)')
MATLAB kılını kıpırdatmıyor. Busy diyor. Asla tepki yok. Bekliyorum bekliyorum bir şey yok.
CTRL+C ile durduruyorum mecburen. O zaman da bana şu hatayı veriyor:
??? Operation terminated by user during ==> ode45 at 481
Ne yapmalıyım arkadaşlar, yardımcı olabilecek varsa çok memnun olurum.
0
lady lady morgana (
05.12.13)
kuvvetle muhtemel sonsuz döngüye girmiş.
şu an elimin altında yok matlab test edemiyorum.
0
eğer gözlerim beni yanıltmıyorsa bir döngü yok. dolayısıyla sonsuz döngüye girmiş olmaması lazım.. zaten yazdığınız şeye bakılırsa daha plota gelememiş bile zavallı matlabcık.
bir de yine aynı şeyi söylüyormuş gibi olmasın ama fonksiyonunuzdaki t değişkenini kullanmamışsınız.
ODEfunc(t, Yfuncvec) diye tanımlamışsınız.
t nerede kullanılıyor gösterir misiniz?
0
fonksiyonlar t ye bağlı değişiyor.
dLdt = (-kf*L*Rs+kr*Cs)*(n/Nav);
dCsdt = kf*L*Rs-(kr+ke)*Cs;
dCidt = ke*Cs-kdeg*Ci;
dRsdt = -kf*L*Rs+kr*Cs+Vr-kt*Rs;
dRidt = kt*Rs-kdeg*Ri;
dYfuncvecdt=[dLdt;dCsdt;dCidt;dRsdt;dRidt];
haklı olabilirsiniz, ancak t kullanmamam gerekiyorsa ne koyabilirim? Bu arada bu modelin bir benzeri orada t yazılı halde iken çalışıyor. Sorunu anlayamıyorum, matlab hızlı çalışan bir program değil diyordu insanlar, sabredip bekledim ama yok, çizmiyor :)
0
🌸
lady lady morgana
(
05.12.13)
debug yapsana hangi satırda takılıyor onu görürsün en azından.
bir de ODEfunc fonksiyonunu test ettin mi hiç? sorunsuz sonuç döndürüyor mu?
0
odefunc.m dosyam çok güzel çalışıyor. sıkıntı grafikte çıkıyor.
0
🌸
lady lady morgana
(
05.12.13)